package donnees;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.util.Iterator;

import fabriques.FabCategorie;
import fabriques.FabLigneCommande;

public class Produit implements Serializable, Comparable<Produit>{
	private static final long serialVersionUID = 641396579141518286L;
	
	private int id;
	private String libelle;
	private String description;
	private float prix;
	private int stock;
	private int delaiES;
	private int delaiHS;
	
	public Produit(int id, String libelle, String description, float prix,
			int stock, int delaiES, int delaiHS) {
		super();
		this.id = id;
		this.libelle = libelle;
		this.description = description;
		this.prix = prix;
		this.stock = stock;
		this.delaiES = delaiES;
		this.delaiHS = delaiHS;
	}
	public int getStock() {
		return stock;
	}
	public void setStock(int stock) {
		this.stock = stock;
	}
	public int getId() {
		return id;
	}
	public String getLibelle() {
		return libelle;
	}
	public String getDescription() {
		return description;
	}
	public float getPrix() {
		return prix;
	}
	
	public String getPrixToString(){
		return (new DecimalFormat("###.00").format(prix));
	}
	
	public int getDelaiES() {
		return delaiES;
	}
	public int getDelaiHS() {
		return delaiHS;
	}
	
	public Categorie getLaCategorie(){
		return FabCategorie.getInstance().rechercherCategorieDuProduit(this.id);
	}
	
	public Iterator<LigneCommande> getLesLignes(){
		return FabLigneCommande.getInstance().rechercherLesLignesDuProduit(this.id);
	}
	
	//methode qui sert a comparer deux produits afin de trier selon la disponibilité
	@Override
	public int compareTo(Produit autreProduit) {
		if(autreProduit.stock==0){
			if(this.stock==0){
				if(this.delaiHS < autreProduit.getDelaiHS()){
					return -1;
				}else{
					return 1;
				}
			}else{
				return -1;
			}
		}
		return 1;
	}
}
